/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.eclipse.iota;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.impl.EPackageImpl;
import org.eclipse.iota.model.Addition;
import org.eclipse.iota.model.Alternation;
import org.eclipse.iota.model.BinaryOperation;
import org.eclipse.iota.model.Clause;
import org.eclipse.iota.model.Constant;
import org.eclipse.iota.model.Constraint;
import org.eclipse.iota.model.Definition;
import org.eclipse.iota.model.Division;
import org.eclipse.iota.model.Element;
import org.eclipse.iota.model.Equation;
import org.eclipse.iota.model.EquationType;
import org.eclipse.iota.model.Existential;
import org.eclipse.iota.model.Exponentiation;
import org.eclipse.iota.model.Expression;
import org.eclipse.iota.model.HighLevelExpression;
import org.eclipse.iota.model.Inclusion;
import org.eclipse.iota.model.LinearCombination;
import org.eclipse.iota.model.LinearExpression;
import org.eclipse.iota.model.Module;
import org.eclipse.iota.model.MultiOperation;
import org.eclipse.iota.model.Multiplication;
import org.eclipse.iota.model.Negation;
import org.eclipse.iota.model.Operation;
import org.eclipse.iota.model.Parameter;
import org.eclipse.iota.model.Polynom;
import org.eclipse.iota.model.Predicate;
import org.eclipse.iota.model.Proof;
import org.eclipse.iota.model.Property;
import org.eclipse.iota.model.Reference;
import org.eclipse.iota.model.Sequent;
import org.eclipse.iota.model.Step;
import org.eclipse.iota.model.UnaryOperation;
import org.eclipse.iota.model.Variable;
import org.eclipse.iota.rewrite.IotaRule;

/**
 * <!-- begin-user-doc -->
 * The <b>Package</b> for the model.
 * It contains accessors for the meta objects to represent
 * <ul>
 *   <li>each class,</li>
 *   <li>each feature of each class,</li>
 *   <li>each enum,</li>
 *   <li>and each data type</li>
 * </ul>
 * <!-- end-user-doc -->
 * @see org.eclipse.iota.IotaFactory
 * @model kind="package"
 * @generated
 */
public class IotaPackage extends EPackageImpl {
	/**
	 * The package name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final String eNAME = "iota";

	/**
	 * The package namespace URI.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final String eNS_URI = "http://www.eclipse.org/iota";

	/**
	 * The package namespace name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final String eNS_PREFIX = "iota";

	/**
	 * The singleton instance of the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static final IotaPackage eINSTANCE = org.eclipse.iota.IotaPackage.init();

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Element <em>Element</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Element
	 * @see org.eclipse.iota.IotaPackage#getElement()
	 * @generated
	 */
	public static final int ELEMENT = 0;

	/**
	 * The number of structural features of the '<em>Element</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ELEMENT_FEATURE_COUNT = 0;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Predicate <em>Predicate</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Predicate
	 * @see org.eclipse.iota.IotaPackage#getPredicate()
	 * @generated
	 */
	public static final int PREDICATE = 1;

	/**
	 * The number of structural features of the '<em>Predicate</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PREDICATE_FEATURE_COUNT = 0;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Module <em>Module</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Module
	 * @see org.eclipse.iota.IotaPackage#getModule()
	 * @generated
	 */
	public static final int MODULE = 2;

	/**
	 * The feature id for the '<em><b>Definitions</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MODULE__DEFINITIONS = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Module</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MODULE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Definition <em>Definition</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Definition
	 * @see org.eclipse.iota.IotaPackage#getDefinition()
	 * @generated
	 */
	public static final int DEFINITION = 3;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DEFINITION__NAME = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DEFINITION__PARAMETERS = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Module</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DEFINITION__MODULE = ELEMENT_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Definition</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DEFINITION_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 3;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Property <em>Property</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Property
	 * @see org.eclipse.iota.IotaPackage#getProperty()
	 * @generated
	 */
	public static final int PROPERTY = 4;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROPERTY__NAME = DEFINITION__NAME;

	/**
	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROPERTY__PARAMETERS = DEFINITION__PARAMETERS;

	/**
	 * The feature id for the '<em><b>Module</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROPERTY__MODULE = DEFINITION__MODULE;

	/**
	 * The feature id for the '<em><b>Body</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROPERTY__BODY = DEFINITION_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Property</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROPERTY_FEATURE_COUNT = DEFINITION_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Sequent <em>Sequent</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Sequent
	 * @see org.eclipse.iota.IotaPackage#getSequent()
	 * @generated
	 */
	public static final int SEQUENT = 30;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Alternation <em>Alternation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Alternation
	 * @see org.eclipse.iota.IotaPackage#getAlternation()
	 * @generated
	 */
	public static final int ALTERNATION = 5;

	/**
	 * The feature id for the '<em><b>Clauses</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ALTERNATION__CLAUSES = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Alternation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ALTERNATION_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Proof <em>Proof</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Proof
	 * @see org.eclipse.iota.IotaPackage#getProof()
	 * @generated
	 */
	public static final int PROOF = 31;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Step <em>Step</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Step
	 * @see org.eclipse.iota.IotaPackage#getStep()
	 * @generated
	 */
	public static final int STEP = 32;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Clause <em>Clause</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Clause
	 * @see org.eclipse.iota.IotaPackage#getClause()
	 * @generated
	 */
	public static final int CLAUSE = 6;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Constraint <em>Constraint</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Constraint
	 * @see org.eclipse.iota.IotaPackage#getConstraint()
	 * @generated
	 */
	public static final int CONSTRAINT = 7;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Boolean <em>Boolean</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Boolean
	 * @see org.eclipse.iota.IotaPackage#getBoolean()
	 * @generated
	 */
	public static final int BOOLEAN = 8;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Inclusion <em>Inclusion</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Inclusion
	 * @see org.eclipse.iota.IotaPackage#getInclusion()
	 * @generated
	 */
	public static final int INCLUSION = 9;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Equation <em>Equation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Equation
	 * @see org.eclipse.iota.IotaPackage#getEquation()
	 * @generated
	 */
	public static final int EQUATION = 10;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Expression <em>Expression</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Expression
	 * @see org.eclipse.iota.IotaPackage#getExpression()
	 * @generated
	 */
	public static final int EXPRESSION = 14;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Operation <em>Operation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Operation
	 * @see org.eclipse.iota.IotaPackage#getOperation()
	 * @generated
	 */
	public static final int OPERATION = 17;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.BinaryOperation <em>Binary Operation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.BinaryOperation
	 * @see org.eclipse.iota.IotaPackage#getBinaryOperation()
	 * @generated
	 */
	public static final int BINARY_OPERATION = 19;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.MultiOperation <em>Multi Operation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.MultiOperation
	 * @see org.eclipse.iota.IotaPackage#getMultiOperation()
	 * @generated
	 */
	public static final int MULTI_OPERATION = 20;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Variable <em>Variable</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Variable
	 * @see org.eclipse.iota.IotaPackage#getVariable()
	 * @generated
	 */
	public static final int VARIABLE = 11;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Parameter <em>Parameter</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Parameter
	 * @see org.eclipse.iota.IotaPackage#getParameter()
	 * @generated
	 */
	public static final int PARAMETER = 12;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Existential <em>Existential</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Existential
	 * @see org.eclipse.iota.IotaPackage#getExistential()
	 * @generated
	 */
	public static final int EXISTENTIAL = 13;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Constant <em>Constant</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Constant
	 * @see org.eclipse.iota.IotaPackage#getConstant()
	 * @generated
	 */
	public static final int CONSTANT = 15;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Reference <em>Reference</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Reference
	 * @see org.eclipse.iota.IotaPackage#getReference()
	 * @generated
	 */
	public static final int REFERENCE = 16;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.UnaryOperation <em>Unary Operation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.UnaryOperation
	 * @see org.eclipse.iota.IotaPackage#getUnaryOperation()
	 * @generated
	 */
	public static final int UNARY_OPERATION = 18;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Addition <em>Addition</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Addition
	 * @see org.eclipse.iota.IotaPackage#getAddition()
	 * @generated
	 */
	public static final int ADDITION = 21;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Multiplication <em>Multiplication</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Multiplication
	 * @see org.eclipse.iota.IotaPackage#getMultiplication()
	 * @generated
	 */
	public static final int MULTIPLICATION = 22;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Negation <em>Negation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Negation
	 * @see org.eclipse.iota.IotaPackage#getNegation()
	 * @generated
	 */
	public static final int NEGATION = 23;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Division <em>Division</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Division
	 * @see org.eclipse.iota.IotaPackage#getDivision()
	 * @generated
	 */
	public static final int DIVISION = 24;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Exponentiation <em>Exponentiation</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Exponentiation
	 * @see org.eclipse.iota.IotaPackage#getExponentiation()
	 * @generated
	 */
	public static final int EXPONENTIATION = 25;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.HighLevelExpression <em>High Level Expression</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.HighLevelExpression
	 * @see org.eclipse.iota.IotaPackage#getHighLevelExpression()
	 * @generated
	 */
	public static final int HIGH_LEVEL_EXPRESSION = 26;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.LinearCombination <em>Linear Combination</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.LinearCombination
	 * @see org.eclipse.iota.IotaPackage#getLinearCombination()
	 * @generated
	 */
	public static final int LINEAR_COMBINATION = 28;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.Polynom <em>Polynom</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.Polynom
	 * @see org.eclipse.iota.IotaPackage#getPolynom()
	 * @generated
	 */
	public static final int POLYNOM = 29;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.LinearExpression <em>Linear Expression</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.LinearExpression
	 * @see org.eclipse.iota.IotaPackage#getLinearExpression()
	 * @generated
	 */
	public static final int LINEAR_EXPRESSION = 27;

	/**
	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CLAUSE__CONSTRAINTS = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Existentials</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CLAUSE__EXISTENTIALS = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Alternation</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CLAUSE__ALTERNATION = ELEMENT_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Clause</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CLAUSE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Clause</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTRAINT__CLAUSE = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Inferred</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTRAINT__INFERRED = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Constraint</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTRAINT_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Clause</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BOOLEAN__CLAUSE = CONSTRAINT__CLAUSE;

	/**
	 * The feature id for the '<em><b>Inferred</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BOOLEAN__INFERRED = CONSTRAINT__INFERRED;

	/**
	 * The feature id for the '<em><b>Value</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BOOLEAN__VALUE = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Boolean</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BOOLEAN_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Clause</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INCLUSION__CLAUSE = CONSTRAINT__CLAUSE;

	/**
	 * The feature id for the '<em><b>Inferred</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INCLUSION__INFERRED = CONSTRAINT__INFERRED;

	/**
	 * The feature id for the '<em><b>Target</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INCLUSION__TARGET = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INCLUSION__ARGUMENTS = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Inclusion</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int INCLUSION_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Clause</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__CLAUSE = CONSTRAINT__CLAUSE;

	/**
	 * The feature id for the '<em><b>Inferred</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__INFERRED = CONSTRAINT__INFERRED;

	/**
	 * The feature id for the '<em><b>Left</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__LEFT = CONSTRAINT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Right</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__RIGHT = CONSTRAINT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Type</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION__TYPE = CONSTRAINT_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Equation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EQUATION_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int VARIABLE__NAME = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Variable</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int VARIABLE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PARAMETER__NAME = VARIABLE__NAME;

	/**
	 * The number of structural features of the '<em>Parameter</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PARAMETER_FEATURE_COUNT = VARIABLE_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXISTENTIAL__NAME = VARIABLE__NAME;

	/**
	 * The number of structural features of the '<em>Existential</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXISTENTIAL_FEATURE_COUNT = VARIABLE_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXPRESSION__EQUATION = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Expression</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXPRESSION_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTANT__EQUATION = EXPRESSION__EQUATION;

	/**
	 * The feature id for the '<em><b>Value</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTANT__VALUE = EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Constant</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int CONSTANT_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int REFERENCE__EQUATION = EXPRESSION__EQUATION;

	/**
	 * The feature id for the '<em><b>Variable</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int REFERENCE__VARIABLE = EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Reference</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int REFERENCE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int OPERATION__EQUATION = EXPRESSION__EQUATION;

	/**
	 * The number of structural features of the '<em>Operation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int OPERATION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int UNARY_OPERATION__EQUATION = OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Operand</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int UNARY_OPERATION__OPERAND = OPERATION_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Unary Operation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int UNARY_OPERATION_FEATURE_COUNT = OPERATION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BINARY_OPERATION__EQUATION = OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Left</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BINARY_OPERATION__LEFT = OPERATION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Right</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BINARY_OPERATION__RIGHT = OPERATION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Binary Operation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int BINARY_OPERATION_FEATURE_COUNT = OPERATION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MULTI_OPERATION__EQUATION = OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Operands</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MULTI_OPERATION__OPERANDS = OPERATION_FEATURE_COUNT + 0;

	/**
	 * The number of structural features of the '<em>Multi Operation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MULTI_OPERATION_FEATURE_COUNT = OPERATION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ADDITION__EQUATION = MULTI_OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Operands</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ADDITION__OPERANDS = MULTI_OPERATION__OPERANDS;

	/**
	 * The number of structural features of the '<em>Addition</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int ADDITION_FEATURE_COUNT = MULTI_OPERATION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MULTIPLICATION__EQUATION = MULTI_OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Operands</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MULTIPLICATION__OPERANDS = MULTI_OPERATION__OPERANDS;

	/**
	 * The number of structural features of the '<em>Multiplication</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int MULTIPLICATION_FEATURE_COUNT = MULTI_OPERATION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NEGATION__EQUATION = UNARY_OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Operand</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NEGATION__OPERAND = UNARY_OPERATION__OPERAND;

	/**
	 * The number of structural features of the '<em>Negation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int NEGATION_FEATURE_COUNT = UNARY_OPERATION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DIVISION__EQUATION = BINARY_OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Left</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DIVISION__LEFT = BINARY_OPERATION__LEFT;

	/**
	 * The feature id for the '<em><b>Right</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DIVISION__RIGHT = BINARY_OPERATION__RIGHT;

	/**
	 * The number of structural features of the '<em>Division</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int DIVISION_FEATURE_COUNT = BINARY_OPERATION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXPONENTIATION__EQUATION = BINARY_OPERATION__EQUATION;

	/**
	 * The feature id for the '<em><b>Left</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXPONENTIATION__LEFT = BINARY_OPERATION__LEFT;

	/**
	 * The feature id for the '<em><b>Right</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXPONENTIATION__RIGHT = BINARY_OPERATION__RIGHT;

	/**
	 * The number of structural features of the '<em>Exponentiation</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int EXPONENTIATION_FEATURE_COUNT = BINARY_OPERATION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int HIGH_LEVEL_EXPRESSION__EQUATION = EXPRESSION__EQUATION;

	/**
	 * The number of structural features of the '<em>High Level Expression</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int HIGH_LEVEL_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_EXPRESSION__EQUATION = HIGH_LEVEL_EXPRESSION__EQUATION;

	/**
	 * The feature id for the '<em><b>Base</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_EXPRESSION__BASE = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Factor</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_EXPRESSION__FACTOR = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_EXPRESSION__OFFSET = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Linear Expression</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_EXPRESSION_FEATURE_COUNT = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_COMBINATION__EQUATION = HIGH_LEVEL_EXPRESSION__EQUATION;

	/**
	 * The feature id for the '<em><b>Variables</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_COMBINATION__VARIABLES = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Factors</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_COMBINATION__FACTORS = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Offset</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_COMBINATION__OFFSET = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Linear Combination</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int LINEAR_COMBINATION_FEATURE_COUNT = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Equation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int POLYNOM__EQUATION = HIGH_LEVEL_EXPRESSION__EQUATION;

	/**
	 * The feature id for the '<em><b>Variable</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int POLYNOM__VARIABLE = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Factors</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int POLYNOM__FACTORS = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Polynom</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int POLYNOM_FEATURE_COUNT = HIGH_LEVEL_EXPRESSION_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT__NAME = DEFINITION__NAME;

	/**
	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT__PARAMETERS = DEFINITION__PARAMETERS;

	/**
	 * The feature id for the '<em><b>Module</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT__MODULE = DEFINITION__MODULE;

	/**
	 * The feature id for the '<em><b>Premise</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT__PREMISE = DEFINITION_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Conclusion</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT__CONCLUSION = DEFINITION_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Proof</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT__PROOF = DEFINITION_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Sequent</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int SEQUENT_FEATURE_COUNT = DEFINITION_FEATURE_COUNT + 3;

	/**
	 * The feature id for the '<em><b>Sequent</b></em>' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROOF__SEQUENT = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Steps</b></em>' containment reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROOF__STEPS = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The number of structural features of the '<em>Proof</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int PROOF_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 2;

	/**
	 * The feature id for the '<em><b>Rule</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STEP__RULE = ELEMENT_FEATURE_COUNT + 0;

	/**
	 * The feature id for the '<em><b>Target</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STEP__TARGET = ELEMENT_FEATURE_COUNT + 1;

	/**
	 * The feature id for the '<em><b>Match</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STEP__MATCH = ELEMENT_FEATURE_COUNT + 2;

	/**
	 * The number of structural features of the '<em>Step</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	public static final int STEP_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 3;

	/**
	 * The meta object id for the '{@link org.eclipse.iota.model.EquationType <em>Equation Type</em>}' enum.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.model.EquationType
	 * @see org.eclipse.iota.IotaPackage#getEquationType()
	 * @generated
	 */
	public static final int EQUATION_TYPE = 33;

	/**
	 * The meta object id for the '<em>Rule</em>' data type.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.iota.rewrite.IotaRule
	 * @see org.eclipse.iota.IotaPackage#getIotaRule()
	 * @generated
	 */
	public static final int IOTA_RULE = 34;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass elementEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass predicateEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass moduleEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass definitionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass clauseEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass constraintEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass booleanEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass inclusionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass equationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass expressionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass operationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass unaryOperationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass binaryOperationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass multiOperationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass variableEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass parameterEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass existentialEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass constantEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass referenceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass additionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass multiplicationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass negationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass divisionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass exponentiationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass highLevelExpressionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass linearCombinationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass polynomEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass linearExpressionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass propertyEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass sequentEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass alternationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass proofEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass stepEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum equationTypeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType iotaRuleEDataType = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see org.eclipse.iota.IotaPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private IotaPackage() {
		super(eNS_URI, IotaFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link IotaPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static IotaPackage init() {
		if (isInited) return (IotaPackage)EPackage.Registry.INSTANCE.getEPackage(IotaPackage.eNS_URI);

		// Obtain or create and register package
		IotaPackage theIotaPackage = (IotaPackage)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof IotaPackage ? EPackage.Registry.INSTANCE.get(eNS_URI) : new IotaPackage());

		isInited = true;

		// Create package meta-data objects
		theIotaPackage.createPackageContents();

		// Initialize created meta-data
		theIotaPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theIotaPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(IotaPackage.eNS_URI, theIotaPackage);
		return theIotaPackage;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Element <em>Element</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Element</em>'.
	 * @see org.eclipse.iota.model.Element
	 * @generated
	 */
	public EClass getElement() {
		return elementEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Predicate <em>Predicate</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Predicate</em>'.
	 * @see org.eclipse.iota.model.Predicate
	 * @generated
	 */
	public EClass getPredicate() {
		return predicateEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Module <em>Module</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Module</em>'.
	 * @see org.eclipse.iota.model.Module
	 * @generated
	 */
	public EClass getModule() {
		return moduleEClass;
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Module#getDefinitions <em>Definitions</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Definitions</em>'.
	 * @see org.eclipse.iota.model.Module#getDefinitions()
	 * @see #getModule()
	 * @generated
	 */
	public EReference getModule_Definitions() {
		return (EReference)moduleEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Definition <em>Definition</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Definition</em>'.
	 * @see org.eclipse.iota.model.Definition
	 * @generated
	 */
	public EClass getDefinition() {
		return definitionEClass;
	}


	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Definition#getName <em>Name</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Name</em>'.
	 * @see org.eclipse.iota.model.Definition#getName()
	 * @see #getDefinition()
	 * @generated
	 */
	public EAttribute getDefinition_Name() {
		return (EAttribute)definitionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Definition#getParameters <em>Parameters</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Parameters</em>'.
	 * @see org.eclipse.iota.model.Definition#getParameters()
	 * @see #getDefinition()
	 * @generated
	 */
	public EReference getDefinition_Parameters() {
		return (EReference)definitionEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the container reference '{@link org.eclipse.iota.model.Definition#getModule <em>Module</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the container reference '<em>Module</em>'.
	 * @see org.eclipse.iota.model.Definition#getModule()
	 * @see #getDefinition()
	 * @generated
	 */
	public EReference getDefinition_Module() {
		return (EReference)definitionEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Clause <em>Clause</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Clause</em>'.
	 * @see org.eclipse.iota.model.Clause
	 * @generated
	 */
	public EClass getClause() {
		return clauseEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Clause#getConstraints <em>Constraints</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Constraints</em>'.
	 * @see org.eclipse.iota.model.Clause#getConstraints()
	 * @see #getClause()
	 * @generated
	 */
	public EReference getClause_Constraints() {
		return (EReference)clauseEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Clause#getExistentials <em>Existentials</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Existentials</em>'.
	 * @see org.eclipse.iota.model.Clause#getExistentials()
	 * @see #getClause()
	 * @generated
	 */
	public EReference getClause_Existentials() {
		return (EReference)clauseEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the container reference '{@link org.eclipse.iota.model.Clause#getAlternation <em>Alternation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the container reference '<em>Alternation</em>'.
	 * @see org.eclipse.iota.model.Clause#getAlternation()
	 * @see #getClause()
	 * @generated
	 */
	public EReference getClause_Alternation() {
		return (EReference)clauseEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Constraint <em>Constraint</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Constraint</em>'.
	 * @see org.eclipse.iota.model.Constraint
	 * @generated
	 */
	public EClass getConstraint() {
		return constraintEClass;
	}


	/**
	 * Returns the meta object for the container reference '{@link org.eclipse.iota.model.Constraint#getClause <em>Clause</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the container reference '<em>Clause</em>'.
	 * @see org.eclipse.iota.model.Constraint#getClause()
	 * @see #getConstraint()
	 * @generated
	 */
	public EReference getConstraint_Clause() {
		return (EReference)constraintEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Constraint#isInferred <em>Inferred</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Inferred</em>'.
	 * @see org.eclipse.iota.model.Constraint#isInferred()
	 * @see #getConstraint()
	 * @generated
	 */
	public EAttribute getConstraint_Inferred() {
		return (EAttribute)constraintEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Boolean <em>Boolean</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Boolean</em>'.
	 * @see org.eclipse.iota.model.Boolean
	 * @generated
	 */
	public EClass getBoolean() {
		return booleanEClass;
	}


	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Boolean#isValue <em>Value</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Value</em>'.
	 * @see org.eclipse.iota.model.Boolean#isValue()
	 * @see #getBoolean()
	 * @generated
	 */
	public EAttribute getBoolean_Value() {
		return (EAttribute)booleanEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Inclusion <em>Inclusion</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Inclusion</em>'.
	 * @see org.eclipse.iota.model.Inclusion
	 * @generated
	 */
	public EClass getInclusion() {
		return inclusionEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link org.eclipse.iota.model.Inclusion#getTarget <em>Target</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Target</em>'.
	 * @see org.eclipse.iota.model.Inclusion#getTarget()
	 * @see #getInclusion()
	 * @generated
	 */
	public EReference getInclusion_Target() {
		return (EReference)inclusionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the reference list '{@link org.eclipse.iota.model.Inclusion#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Arguments</em>'.
	 * @see org.eclipse.iota.model.Inclusion#getArguments()
	 * @see #getInclusion()
	 * @generated
	 */
	public EReference getInclusion_Arguments() {
		return (EReference)inclusionEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Equation <em>Equation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Equation</em>'.
	 * @see org.eclipse.iota.model.Equation
	 * @generated
	 */
	public EClass getEquation() {
		return equationEClass;
	}

	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.Equation#getLeft <em>Left</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Left</em>'.
	 * @see org.eclipse.iota.model.Equation#getLeft()
	 * @see #getEquation()
	 * @generated
	 */
	public EReference getEquation_Left() {
		return (EReference)equationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.Equation#getRight <em>Right</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Right</em>'.
	 * @see org.eclipse.iota.model.Equation#getRight()
	 * @see #getEquation()
	 * @generated
	 */
	public EReference getEquation_Right() {
		return (EReference)equationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Equation#getType <em>Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Type</em>'.
	 * @see org.eclipse.iota.model.Equation#getType()
	 * @see #getEquation()
	 * @generated
	 */
	public EAttribute getEquation_Type() {
		return (EAttribute)equationEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Expression <em>Expression</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Expression</em>'.
	 * @see org.eclipse.iota.model.Expression
	 * @generated
	 */
	public EClass getExpression() {
		return expressionEClass;
	}

	/**
	 * Returns the meta object for the reference '{@link org.eclipse.iota.model.Expression#getEquation <em>Equation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Equation</em>'.
	 * @see org.eclipse.iota.model.Expression#getEquation()
	 * @see #getExpression()
	 * @generated
	 */
	public EReference getExpression_Equation() {
		return (EReference)expressionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Operation <em>Operation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Operation</em>'.
	 * @see org.eclipse.iota.model.Operation
	 * @generated
	 */
	public EClass getOperation() {
		return operationEClass;
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.UnaryOperation <em>Unary Operation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Unary Operation</em>'.
	 * @see org.eclipse.iota.model.UnaryOperation
	 * @generated
	 */
	public EClass getUnaryOperation() {
		return unaryOperationEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.UnaryOperation#getOperand <em>Operand</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Operand</em>'.
	 * @see org.eclipse.iota.model.UnaryOperation#getOperand()
	 * @see #getUnaryOperation()
	 * @generated
	 */
	public EReference getUnaryOperation_Operand() {
		return (EReference)unaryOperationEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.BinaryOperation <em>Binary Operation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Binary Operation</em>'.
	 * @see org.eclipse.iota.model.BinaryOperation
	 * @generated
	 */
	public EClass getBinaryOperation() {
		return binaryOperationEClass;
	}

	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.BinaryOperation#getLeft <em>Left</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Left</em>'.
	 * @see org.eclipse.iota.model.BinaryOperation#getLeft()
	 * @see #getBinaryOperation()
	 * @generated
	 */
	public EReference getBinaryOperation_Left() {
		return (EReference)binaryOperationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.BinaryOperation#getRight <em>Right</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Right</em>'.
	 * @see org.eclipse.iota.model.BinaryOperation#getRight()
	 * @see #getBinaryOperation()
	 * @generated
	 */
	public EReference getBinaryOperation_Right() {
		return (EReference)binaryOperationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.MultiOperation <em>Multi Operation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Multi Operation</em>'.
	 * @see org.eclipse.iota.model.MultiOperation
	 * @generated
	 */
	public EClass getMultiOperation() {
		return multiOperationEClass;
	}

	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.MultiOperation#getOperands <em>Operands</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Operands</em>'.
	 * @see org.eclipse.iota.model.MultiOperation#getOperands()
	 * @see #getMultiOperation()
	 * @generated
	 */
	public EReference getMultiOperation_Operands() {
		return (EReference)multiOperationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Variable <em>Variable</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Variable</em>'.
	 * @see org.eclipse.iota.model.Variable
	 * @generated
	 */
	public EClass getVariable() {
		return variableEClass;
	}

	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Variable#getName <em>Name</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Name</em>'.
	 * @see org.eclipse.iota.model.Variable#getName()
	 * @see #getVariable()
	 * @generated
	 */
	public EAttribute getVariable_Name() {
		return (EAttribute)variableEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Parameter <em>Parameter</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Parameter</em>'.
	 * @see org.eclipse.iota.model.Parameter
	 * @generated
	 */
	public EClass getParameter() {
		return parameterEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Existential <em>Existential</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Existential</em>'.
	 * @see org.eclipse.iota.model.Existential
	 * @generated
	 */
	public EClass getExistential() {
		return existentialEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Constant <em>Constant</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Constant</em>'.
	 * @see org.eclipse.iota.model.Constant
	 * @generated
	 */
	public EClass getConstant() {
		return constantEClass;
	}

	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Constant#getValue <em>Value</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Value</em>'.
	 * @see org.eclipse.iota.model.Constant#getValue()
	 * @see #getConstant()
	 * @generated
	 */
	public EAttribute getConstant_Value() {
		return (EAttribute)constantEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Reference <em>Reference</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Reference</em>'.
	 * @see org.eclipse.iota.model.Reference
	 * @generated
	 */
	public EClass getReference() {
		return referenceEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link org.eclipse.iota.model.Reference#getVariable <em>Variable</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Variable</em>'.
	 * @see org.eclipse.iota.model.Reference#getVariable()
	 * @see #getReference()
	 * @generated
	 */
	public EReference getReference_Variable() {
		return (EReference)referenceEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Addition <em>Addition</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Addition</em>'.
	 * @see org.eclipse.iota.model.Addition
	 * @generated
	 */
	public EClass getAddition() {
		return additionEClass;
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Multiplication <em>Multiplication</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Multiplication</em>'.
	 * @see org.eclipse.iota.model.Multiplication
	 * @generated
	 */
	public EClass getMultiplication() {
		return multiplicationEClass;
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Negation <em>Negation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Negation</em>'.
	 * @see org.eclipse.iota.model.Negation
	 * @generated
	 */
	public EClass getNegation() {
		return negationEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Division <em>Division</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Division</em>'.
	 * @see org.eclipse.iota.model.Division
	 * @generated
	 */
	public EClass getDivision() {
		return divisionEClass;
	}

	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Exponentiation <em>Exponentiation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Exponentiation</em>'.
	 * @see org.eclipse.iota.model.Exponentiation
	 * @generated
	 */
	public EClass getExponentiation() {
		return exponentiationEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.HighLevelExpression <em>High Level Expression</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>High Level Expression</em>'.
	 * @see org.eclipse.iota.model.HighLevelExpression
	 * @generated
	 */
	public EClass getHighLevelExpression() {
		return highLevelExpressionEClass;
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.LinearCombination <em>Linear Combination</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Linear Combination</em>'.
	 * @see org.eclipse.iota.model.LinearCombination
	 * @generated
	 */
	public EClass getLinearCombination() {
		return linearCombinationEClass;
	}


	/**
	 * Returns the meta object for the reference list '{@link org.eclipse.iota.model.LinearCombination#getVariables <em>Variables</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Variables</em>'.
	 * @see org.eclipse.iota.model.LinearCombination#getVariables()
	 * @see #getLinearCombination()
	 * @generated
	 */
	public EReference getLinearCombination_Variables() {
		return (EReference)linearCombinationEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.LinearCombination#getFactors <em>Factors</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Factors</em>'.
	 * @see org.eclipse.iota.model.LinearCombination#getFactors()
	 * @see #getLinearCombination()
	 * @generated
	 */
	public EReference getLinearCombination_Factors() {
		return (EReference)linearCombinationEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.LinearCombination#getOffset <em>Offset</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Offset</em>'.
	 * @see org.eclipse.iota.model.LinearCombination#getOffset()
	 * @see #getLinearCombination()
	 * @generated
	 */
	public EReference getLinearCombination_Offset() {
		return (EReference)linearCombinationEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Polynom <em>Polynom</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Polynom</em>'.
	 * @see org.eclipse.iota.model.Polynom
	 * @generated
	 */
	public EClass getPolynom() {
		return polynomEClass;
	}


	/**
	 * Returns the meta object for the reference '{@link org.eclipse.iota.model.Polynom#getVariable <em>Variable</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference '<em>Variable</em>'.
	 * @see org.eclipse.iota.model.Polynom#getVariable()
	 * @see #getPolynom()
	 * @generated
	 */
	public EReference getPolynom_Variable() {
		return (EReference)polynomEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Polynom#getFactors <em>Factors</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Factors</em>'.
	 * @see org.eclipse.iota.model.Polynom#getFactors()
	 * @see #getPolynom()
	 * @generated
	 */
	public EReference getPolynom_Factors() {
		return (EReference)polynomEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.LinearExpression <em>Linear Expression</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Linear Expression</em>'.
	 * @see org.eclipse.iota.model.LinearExpression
	 * @generated
	 */
	public EClass getLinearExpression() {
		return linearExpressionEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.LinearExpression#getBase <em>Base</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Base</em>'.
	 * @see org.eclipse.iota.model.LinearExpression#getBase()
	 * @see #getLinearExpression()
	 * @generated
	 */
	public EReference getLinearExpression_Base() {
		return (EReference)linearExpressionEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.LinearExpression#getFactor <em>Factor</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Factor</em>'.
	 * @see org.eclipse.iota.model.LinearExpression#getFactor()
	 * @see #getLinearExpression()
	 * @generated
	 */
	public EReference getLinearExpression_Factor() {
		return (EReference)linearExpressionEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.LinearExpression#getOffset <em>Offset</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Offset</em>'.
	 * @see org.eclipse.iota.model.LinearExpression#getOffset()
	 * @see #getLinearExpression()
	 * @generated
	 */
	public EReference getLinearExpression_Offset() {
		return (EReference)linearExpressionEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Property <em>Property</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Property</em>'.
	 * @see org.eclipse.iota.model.Property
	 * @generated
	 */
	public EClass getProperty() {
		return propertyEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.Property#getBody <em>Body</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Body</em>'.
	 * @see org.eclipse.iota.model.Property#getBody()
	 * @see #getProperty()
	 * @generated
	 */
	public EReference getProperty_Body() {
		return (EReference)propertyEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Sequent <em>Sequent</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Sequent</em>'.
	 * @see org.eclipse.iota.model.Sequent
	 * @generated
	 */
	public EClass getSequent() {
		return sequentEClass;
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.Sequent#getPremise <em>Premise</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Premise</em>'.
	 * @see org.eclipse.iota.model.Sequent#getPremise()
	 * @see #getSequent()
	 * @generated
	 */
	public EReference getSequent_Premise() {
		return (EReference)sequentEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.Sequent#getConclusion <em>Conclusion</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Conclusion</em>'.
	 * @see org.eclipse.iota.model.Sequent#getConclusion()
	 * @see #getSequent()
	 * @generated
	 */
	public EReference getSequent_Conclusion() {
		return (EReference)sequentEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the containment reference '{@link org.eclipse.iota.model.Sequent#getProof <em>Proof</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference '<em>Proof</em>'.
	 * @see org.eclipse.iota.model.Sequent#getProof()
	 * @see #getSequent()
	 * @generated
	 */
	public EReference getSequent_Proof() {
		return (EReference)sequentEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Alternation <em>Alternation</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Alternation</em>'.
	 * @see org.eclipse.iota.model.Alternation
	 * @generated
	 */
	public EClass getAlternation() {
		return alternationEClass;
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Alternation#getClauses <em>Clauses</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Clauses</em>'.
	 * @see org.eclipse.iota.model.Alternation#getClauses()
	 * @see #getAlternation()
	 * @generated
	 */
	public EReference getAlternation_Clauses() {
		return (EReference)alternationEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Proof <em>Proof</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Proof</em>'.
	 * @see org.eclipse.iota.model.Proof
	 * @generated
	 */
	public EClass getProof() {
		return proofEClass;
	}


	/**
	 * Returns the meta object for the containment reference list '{@link org.eclipse.iota.model.Proof#getSteps <em>Steps</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the containment reference list '<em>Steps</em>'.
	 * @see org.eclipse.iota.model.Proof#getSteps()
	 * @see #getProof()
	 * @generated
	 */
	public EReference getProof_Steps() {
		return (EReference)proofEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for class '{@link org.eclipse.iota.model.Step <em>Step</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Step</em>'.
	 * @see org.eclipse.iota.model.Step
	 * @generated
	 */
	public EClass getStep() {
		return stepEClass;
	}


	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Step#getRule <em>Rule</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Rule</em>'.
	 * @see org.eclipse.iota.model.Step#getRule()
	 * @see #getStep()
	 * @generated
	 */
	public EAttribute getStep_Rule() {
		return (EAttribute)stepEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Step#getTarget <em>Target</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Target</em>'.
	 * @see org.eclipse.iota.model.Step#getTarget()
	 * @see #getStep()
	 * @generated
	 */
	public EAttribute getStep_Target() {
		return (EAttribute)stepEClass.getEStructuralFeatures().get(1);
	}


	/**
	 * Returns the meta object for the attribute '{@link org.eclipse.iota.model.Step#getMatch <em>Match</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Match</em>'.
	 * @see org.eclipse.iota.model.Step#getMatch()
	 * @see #getStep()
	 * @generated
	 */
	public EAttribute getStep_Match() {
		return (EAttribute)stepEClass.getEStructuralFeatures().get(2);
	}


	/**
	 * Returns the meta object for the container reference '{@link org.eclipse.iota.model.Proof#getSequent <em>Sequent</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the container reference '<em>Sequent</em>'.
	 * @see org.eclipse.iota.model.Proof#getSequent()
	 * @see #getProof()
	 * @generated
	 */
	public EReference getProof_Sequent() {
		return (EReference)proofEClass.getEStructuralFeatures().get(0);
	}


	/**
	 * Returns the meta object for enum '{@link org.eclipse.iota.model.EquationType <em>Equation Type</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for enum '<em>Equation Type</em>'.
	 * @see org.eclipse.iota.model.EquationType
	 * @generated
	 */
	public EEnum getEquationType() {
		return equationTypeEEnum;
	}


	/**
	 * Returns the meta object for data type '{@link org.eclipse.iota.rewrite.IotaRule <em>Rule</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for data type '<em>Rule</em>'.
	 * @see org.eclipse.iota.rewrite.IotaRule
	 * @model instanceClass="org.eclipse.iota.rewrite.IotaRule"
	 * @generated
	 */
	public EDataType getIotaRule() {
		return iotaRuleEDataType;
	}


	/**
	 * Returns the factory that creates the instances of the model.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the factory that creates the instances of the model.
	 * @generated
	 */
	public IotaFactory getIotaFactory() {
		return (IotaFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		elementEClass = createEClass(ELEMENT);

		predicateEClass = createEClass(PREDICATE);

		moduleEClass = createEClass(MODULE);
		createEReference(moduleEClass, MODULE__DEFINITIONS);

		definitionEClass = createEClass(DEFINITION);
		createEAttribute(definitionEClass, DEFINITION__NAME);
		createEReference(definitionEClass, DEFINITION__PARAMETERS);
		createEReference(definitionEClass, DEFINITION__MODULE);

		propertyEClass = createEClass(PROPERTY);
		createEReference(propertyEClass, PROPERTY__BODY);

		alternationEClass = createEClass(ALTERNATION);
		createEReference(alternationEClass, ALTERNATION__CLAUSES);

		clauseEClass = createEClass(CLAUSE);
		createEReference(clauseEClass, CLAUSE__CONSTRAINTS);
		createEReference(clauseEClass, CLAUSE__EXISTENTIALS);
		createEReference(clauseEClass, CLAUSE__ALTERNATION);

		constraintEClass = createEClass(CONSTRAINT);
		createEReference(constraintEClass, CONSTRAINT__CLAUSE);
		createEAttribute(constraintEClass, CONSTRAINT__INFERRED);

		booleanEClass = createEClass(BOOLEAN);
		createEAttribute(booleanEClass, BOOLEAN__VALUE);

		inclusionEClass = createEClass(INCLUSION);
		createEReference(inclusionEClass, INCLUSION__TARGET);
		createEReference(inclusionEClass, INCLUSION__ARGUMENTS);

		equationEClass = createEClass(EQUATION);
		createEReference(equationEClass, EQUATION__LEFT);
		createEReference(equationEClass, EQUATION__RIGHT);
		createEAttribute(equationEClass, EQUATION__TYPE);

		variableEClass = createEClass(VARIABLE);
		createEAttribute(variableEClass, VARIABLE__NAME);

		parameterEClass = createEClass(PARAMETER);

		existentialEClass = createEClass(EXISTENTIAL);

		expressionEClass = createEClass(EXPRESSION);
		createEReference(expressionEClass, EXPRESSION__EQUATION);

		constantEClass = createEClass(CONSTANT);
		createEAttribute(constantEClass, CONSTANT__VALUE);

		referenceEClass = createEClass(REFERENCE);
		createEReference(referenceEClass, REFERENCE__VARIABLE);

		operationEClass = createEClass(OPERATION);

		unaryOperationEClass = createEClass(UNARY_OPERATION);
		createEReference(unaryOperationEClass, UNARY_OPERATION__OPERAND);

		binaryOperationEClass = createEClass(BINARY_OPERATION);
		createEReference(binaryOperationEClass, BINARY_OPERATION__LEFT);
		createEReference(binaryOperationEClass, BINARY_OPERATION__RIGHT);

		multiOperationEClass = createEClass(MULTI_OPERATION);
		createEReference(multiOperationEClass, MULTI_OPERATION__OPERANDS);

		additionEClass = createEClass(ADDITION);

		multiplicationEClass = createEClass(MULTIPLICATION);

		negationEClass = createEClass(NEGATION);

		divisionEClass = createEClass(DIVISION);

		exponentiationEClass = createEClass(EXPONENTIATION);

		highLevelExpressionEClass = createEClass(HIGH_LEVEL_EXPRESSION);

		linearExpressionEClass = createEClass(LINEAR_EXPRESSION);
		createEReference(linearExpressionEClass, LINEAR_EXPRESSION__BASE);
		createEReference(linearExpressionEClass, LINEAR_EXPRESSION__FACTOR);
		createEReference(linearExpressionEClass, LINEAR_EXPRESSION__OFFSET);

		linearCombinationEClass = createEClass(LINEAR_COMBINATION);
		createEReference(linearCombinationEClass, LINEAR_COMBINATION__VARIABLES);
		createEReference(linearCombinationEClass, LINEAR_COMBINATION__FACTORS);
		createEReference(linearCombinationEClass, LINEAR_COMBINATION__OFFSET);

		polynomEClass = createEClass(POLYNOM);
		createEReference(polynomEClass, POLYNOM__VARIABLE);
		createEReference(polynomEClass, POLYNOM__FACTORS);

		sequentEClass = createEClass(SEQUENT);
		createEReference(sequentEClass, SEQUENT__PREMISE);
		createEReference(sequentEClass, SEQUENT__CONCLUSION);
		createEReference(sequentEClass, SEQUENT__PROOF);

		proofEClass = createEClass(PROOF);
		createEReference(proofEClass, PROOF__SEQUENT);
		createEReference(proofEClass, PROOF__STEPS);

		stepEClass = createEClass(STEP);
		createEAttribute(stepEClass, STEP__RULE);
		createEAttribute(stepEClass, STEP__TARGET);
		createEAttribute(stepEClass, STEP__MATCH);

		// Create enums
		equationTypeEEnum = createEEnum(EQUATION_TYPE);

		// Create data types
		iotaRuleEDataType = createEDataType(IOTA_RULE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		moduleEClass.getESuperTypes().add(this.getElement());
		definitionEClass.getESuperTypes().add(this.getElement());
		propertyEClass.getESuperTypes().add(this.getDefinition());
		propertyEClass.getESuperTypes().add(this.getPredicate());
		alternationEClass.getESuperTypes().add(this.getElement());
		alternationEClass.getESuperTypes().add(this.getPredicate());
		clauseEClass.getESuperTypes().add(this.getElement());
		clauseEClass.getESuperTypes().add(this.getPredicate());
		constraintEClass.getESuperTypes().add(this.getElement());
		constraintEClass.getESuperTypes().add(this.getPredicate());
		booleanEClass.getESuperTypes().add(this.getConstraint());
		inclusionEClass.getESuperTypes().add(this.getConstraint());
		equationEClass.getESuperTypes().add(this.getConstraint());
		variableEClass.getESuperTypes().add(this.getElement());
		parameterEClass.getESuperTypes().add(this.getVariable());
		existentialEClass.getESuperTypes().add(this.getVariable());
		expressionEClass.getESuperTypes().add(this.getElement());
		constantEClass.getESuperTypes().add(this.getExpression());
		referenceEClass.getESuperTypes().add(this.getExpression());
		operationEClass.getESuperTypes().add(this.getExpression());
		unaryOperationEClass.getESuperTypes().add(this.getOperation());
		binaryOperationEClass.getESuperTypes().add(this.getOperation());
		multiOperationEClass.getESuperTypes().add(this.getOperation());
		additionEClass.getESuperTypes().add(this.getMultiOperation());
		multiplicationEClass.getESuperTypes().add(this.getMultiOperation());
		negationEClass.getESuperTypes().add(this.getUnaryOperation());
		divisionEClass.getESuperTypes().add(this.getBinaryOperation());
		exponentiationEClass.getESuperTypes().add(this.getBinaryOperation());
		highLevelExpressionEClass.getESuperTypes().add(this.getExpression());
		linearExpressionEClass.getESuperTypes().add(this.getHighLevelExpression());
		linearCombinationEClass.getESuperTypes().add(this.getHighLevelExpression());
		polynomEClass.getESuperTypes().add(this.getHighLevelExpression());
		sequentEClass.getESuperTypes().add(this.getDefinition());
		proofEClass.getESuperTypes().add(this.getElement());
		stepEClass.getESuperTypes().add(this.getElement());

		// Initialize classes and features; add operations and parameters
		initEClass(elementEClass, Element.class, "Element", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(predicateEClass, Predicate.class, "Predicate", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		addEOperation(predicateEClass, ecorePackage.getEBoolean(), "isTrue", 0, 1, IS_UNIQUE, IS_ORDERED);

		addEOperation(predicateEClass, ecorePackage.getEBoolean(), "isFalse", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(moduleEClass, Module.class, "Module", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getModule_Definitions(), this.getDefinition(), this.getDefinition_Module(), "definitions", null, 0, -1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(definitionEClass, Definition.class, "Definition", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDefinition_Name(), ecorePackage.getEString(), "name", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDefinition_Parameters(), this.getParameter(), null, "parameters", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDefinition_Module(), this.getModule(), this.getModule_Definitions(), "module", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getProperty_Body(), this.getAlternation(), null, "body", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(alternationEClass, Alternation.class, "Alternation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getAlternation_Clauses(), this.getClause(), this.getClause_Alternation(), "clauses", null, 0, -1, Alternation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		addEOperation(alternationEClass, this.getDefinition(), "getDefinition", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(clauseEClass, Clause.class, "Clause", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getClause_Constraints(), this.getConstraint(), this.getConstraint_Clause(), "constraints", null, 0, -1, Clause.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getClause_Existentials(), this.getExistential(), null, "existentials", null, 0, -1, Clause.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getClause_Alternation(), this.getAlternation(), this.getAlternation_Clauses(), "alternation", null, 0, 1, Clause.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(constraintEClass, Constraint.class, "Constraint", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getConstraint_Clause(), this.getClause(), this.getClause_Constraints(), "clause", null, 0, 1, Constraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getConstraint_Inferred(), ecorePackage.getEBoolean(), "inferred", "false", 0, 1, Constraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(booleanEClass, org.eclipse.iota.model.Boolean.class, "Boolean", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getBoolean_Value(), ecorePackage.getEBoolean(), "value", null, 0, 1, org.eclipse.iota.model.Boolean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(inclusionEClass, Inclusion.class, "Inclusion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getInclusion_Target(), this.getProperty(), null, "target", null, 0, 1, Inclusion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getInclusion_Arguments(), this.getVariable(), null, "arguments", null, 0, -1, Inclusion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(equationEClass, Equation.class, "Equation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEquation_Left(), this.getExpression(), null, "left", null, 0, 1, Equation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEquation_Right(), this.getExpression(), null, "right", null, 0, 1, Equation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getEquation_Type(), this.getEquationType(), "type", null, 0, 1, Equation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(variableEClass, Variable.class, "Variable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getVariable_Name(), ecorePackage.getEString(), "name", null, 0, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(parameterEClass, Parameter.class, "Parameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(existentialEClass, Existential.class, "Existential", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(expressionEClass, Expression.class, "Expression", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getExpression_Equation(), this.getEquation(), null, "equation", null, 0, 1, Expression.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(constantEClass, Constant.class, "Constant", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getConstant_Value(), ecorePackage.getEBigInteger(), "value", "0", 0, 1, Constant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(referenceEClass, Reference.class, "Reference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getReference_Variable(), this.getVariable(), null, "variable", null, 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(operationEClass, Operation.class, "Operation", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(unaryOperationEClass, UnaryOperation.class, "UnaryOperation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getUnaryOperation_Operand(), this.getExpression(), null, "operand", null, 0, 1, UnaryOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(binaryOperationEClass, BinaryOperation.class, "BinaryOperation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getBinaryOperation_Left(), this.getExpression(), null, "left", null, 0, 1, BinaryOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getBinaryOperation_Right(), this.getExpression(), null, "right", null, 0, 1, BinaryOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(multiOperationEClass, MultiOperation.class, "MultiOperation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMultiOperation_Operands(), this.getExpression(), null, "operands", null, 0, -1, MultiOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(additionEClass, Addition.class, "Addition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(multiplicationEClass, Multiplication.class, "Multiplication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(negationEClass, Negation.class, "Negation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(divisionEClass, Division.class, "Division", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(exponentiationEClass, Exponentiation.class, "Exponentiation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(highLevelExpressionEClass, HighLevelExpression.class, "HighLevelExpression", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		addEOperation(highLevelExpressionEClass, this.getExpression(), "toBasic", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(linearExpressionEClass, LinearExpression.class, "LinearExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getLinearExpression_Base(), this.getExpression(), null, "base", null, 0, 1, LinearExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLinearExpression_Factor(), this.getConstant(), null, "factor", null, 0, 1, LinearExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLinearExpression_Offset(), this.getConstant(), null, "offset", null, 0, 1, LinearExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(linearCombinationEClass, LinearCombination.class, "LinearCombination", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getLinearCombination_Variables(), this.getVariable(), null, "variables", null, 0, -1, LinearCombination.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLinearCombination_Factors(), this.getConstant(), null, "factors", null, 0, -1, LinearCombination.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getLinearCombination_Offset(), this.getConstant(), null, "offset", null, 0, 1, LinearCombination.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(polynomEClass, Polynom.class, "Polynom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPolynom_Variable(), this.getVariable(), null, "variable", null, 0, 1, Polynom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPolynom_Factors(), this.getConstant(), null, "factors", null, 0, -1, Polynom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(sequentEClass, Sequent.class, "Sequent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSequent_Premise(), this.getAlternation(), null, "premise", null, 0, 1, Sequent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSequent_Conclusion(), this.getAlternation(), null, "conclusion", null, 0, 1, Sequent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSequent_Proof(), this.getProof(), this.getProof_Sequent(), "proof", null, 0, 1, Sequent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(proofEClass, Proof.class, "Proof", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getProof_Sequent(), this.getSequent(), this.getSequent_Proof(), "sequent", null, 0, 1, Proof.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getProof_Steps(), this.getStep(), null, "steps", null, 0, -1, Proof.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		addEOperation(proofEClass, null, "validate", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(stepEClass, Step.class, "Step", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getStep_Rule(), this.getIotaRule(), "rule", null, 0, 1, Step.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getStep_Target(), ecorePackage.getEString(), "target", null, 0, 1, Step.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getStep_Match(), ecorePackage.getEBigInteger(), "match", null, 0, 1, Step.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		EOperation op = addEOperation(stepEClass, ecorePackage.getEBoolean(), "apply", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getElement(), "root", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, ecorePackage.getEBoolean(), "change", 0, 1, IS_UNIQUE, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(equationTypeEEnum, EquationType.class, "EquationType");
		addEEnumLiteral(equationTypeEEnum, EquationType.EQUAL);
		addEEnumLiteral(equationTypeEEnum, EquationType.LESS);
		addEEnumLiteral(equationTypeEEnum, EquationType.GREATER);
		addEEnumLiteral(equationTypeEEnum, EquationType.NOT_EQUAL);

		// Initialize data types
		initEDataType(iotaRuleEDataType, IotaRule.class, "IotaRule", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

		// Create resource
		createResource(eNS_URI);
	}

	/**
	 * <!-- begin-user-doc -->
	 * Defines literals for the meta objects that represent
	 * <ul>
	 *   <li>each class,</li>
	 *   <li>each feature of each class,</li>
	 *   <li>each enum,</li>
	 *   <li>and each data type</li>
	 * </ul>
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public interface Literals {
		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Element <em>Element</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Element
		 * @see org.eclipse.iota.IotaPackage#getElement()
		 * @generated
		 */
		public static final EClass ELEMENT = eINSTANCE.getElement();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Predicate <em>Predicate</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Predicate
		 * @see org.eclipse.iota.IotaPackage#getPredicate()
		 * @generated
		 */
		public static final EClass PREDICATE = eINSTANCE.getPredicate();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Module <em>Module</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Module
		 * @see org.eclipse.iota.IotaPackage#getModule()
		 * @generated
		 */
		public static final EClass MODULE = eINSTANCE.getModule();

		/**
		 * The meta object literal for the '<em><b>Definitions</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference MODULE__DEFINITIONS = eINSTANCE.getModule_Definitions();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Definition <em>Definition</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Definition
		 * @see org.eclipse.iota.IotaPackage#getDefinition()
		 * @generated
		 */
		public static final EClass DEFINITION = eINSTANCE.getDefinition();

		/**
		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute DEFINITION__NAME = eINSTANCE.getDefinition_Name();

		/**
		 * The meta object literal for the '<em><b>Parameters</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference DEFINITION__PARAMETERS = eINSTANCE.getDefinition_Parameters();

		/**
		 * The meta object literal for the '<em><b>Module</b></em>' container reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference DEFINITION__MODULE = eINSTANCE.getDefinition_Module();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Clause <em>Clause</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Clause
		 * @see org.eclipse.iota.IotaPackage#getClause()
		 * @generated
		 */
		public static final EClass CLAUSE = eINSTANCE.getClause();

		/**
		 * The meta object literal for the '<em><b>Constraints</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference CLAUSE__CONSTRAINTS = eINSTANCE.getClause_Constraints();

		/**
		 * The meta object literal for the '<em><b>Existentials</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference CLAUSE__EXISTENTIALS = eINSTANCE.getClause_Existentials();

		/**
		 * The meta object literal for the '<em><b>Alternation</b></em>' container reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference CLAUSE__ALTERNATION = eINSTANCE.getClause_Alternation();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Constraint <em>Constraint</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Constraint
		 * @see org.eclipse.iota.IotaPackage#getConstraint()
		 * @generated
		 */
		public static final EClass CONSTRAINT = eINSTANCE.getConstraint();

		/**
		 * The meta object literal for the '<em><b>Clause</b></em>' container reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference CONSTRAINT__CLAUSE = eINSTANCE.getConstraint_Clause();

		/**
		 * The meta object literal for the '<em><b>Inferred</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute CONSTRAINT__INFERRED = eINSTANCE.getConstraint_Inferred();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Boolean <em>Boolean</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Boolean
		 * @see org.eclipse.iota.IotaPackage#getBoolean()
		 * @generated
		 */
		public static final EClass BOOLEAN = eINSTANCE.getBoolean();

		/**
		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute BOOLEAN__VALUE = eINSTANCE.getBoolean_Value();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Inclusion <em>Inclusion</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Inclusion
		 * @see org.eclipse.iota.IotaPackage#getInclusion()
		 * @generated
		 */
		public static final EClass INCLUSION = eINSTANCE.getInclusion();

		/**
		 * The meta object literal for the '<em><b>Target</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference INCLUSION__TARGET = eINSTANCE.getInclusion_Target();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference INCLUSION__ARGUMENTS = eINSTANCE.getInclusion_Arguments();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Equation <em>Equation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Equation
		 * @see org.eclipse.iota.IotaPackage#getEquation()
		 * @generated
		 */
		public static final EClass EQUATION = eINSTANCE.getEquation();

		/**
		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference EQUATION__LEFT = eINSTANCE.getEquation_Left();

		/**
		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference EQUATION__RIGHT = eINSTANCE.getEquation_Right();

		/**
		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute EQUATION__TYPE = eINSTANCE.getEquation_Type();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Expression <em>Expression</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Expression
		 * @see org.eclipse.iota.IotaPackage#getExpression()
		 * @generated
		 */
		public static final EClass EXPRESSION = eINSTANCE.getExpression();

		/**
		 * The meta object literal for the '<em><b>Equation</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference EXPRESSION__EQUATION = eINSTANCE.getExpression_Equation();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Operation <em>Operation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Operation
		 * @see org.eclipse.iota.IotaPackage#getOperation()
		 * @generated
		 */
		public static final EClass OPERATION = eINSTANCE.getOperation();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.UnaryOperation <em>Unary Operation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.UnaryOperation
		 * @see org.eclipse.iota.IotaPackage#getUnaryOperation()
		 * @generated
		 */
		public static final EClass UNARY_OPERATION = eINSTANCE.getUnaryOperation();

		/**
		 * The meta object literal for the '<em><b>Operand</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference UNARY_OPERATION__OPERAND = eINSTANCE.getUnaryOperation_Operand();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.BinaryOperation <em>Binary Operation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.BinaryOperation
		 * @see org.eclipse.iota.IotaPackage#getBinaryOperation()
		 * @generated
		 */
		public static final EClass BINARY_OPERATION = eINSTANCE.getBinaryOperation();

		/**
		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference BINARY_OPERATION__LEFT = eINSTANCE.getBinaryOperation_Left();

		/**
		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference BINARY_OPERATION__RIGHT = eINSTANCE.getBinaryOperation_Right();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.MultiOperation <em>Multi Operation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.MultiOperation
		 * @see org.eclipse.iota.IotaPackage#getMultiOperation()
		 * @generated
		 */
		public static final EClass MULTI_OPERATION = eINSTANCE.getMultiOperation();

		/**
		 * The meta object literal for the '<em><b>Operands</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference MULTI_OPERATION__OPERANDS = eINSTANCE.getMultiOperation_Operands();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Variable <em>Variable</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Variable
		 * @see org.eclipse.iota.IotaPackage#getVariable()
		 * @generated
		 */
		public static final EClass VARIABLE = eINSTANCE.getVariable();

		/**
		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute VARIABLE__NAME = eINSTANCE.getVariable_Name();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Parameter <em>Parameter</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Parameter
		 * @see org.eclipse.iota.IotaPackage#getParameter()
		 * @generated
		 */
		public static final EClass PARAMETER = eINSTANCE.getParameter();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Existential <em>Existential</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Existential
		 * @see org.eclipse.iota.IotaPackage#getExistential()
		 * @generated
		 */
		public static final EClass EXISTENTIAL = eINSTANCE.getExistential();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Constant <em>Constant</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Constant
		 * @see org.eclipse.iota.IotaPackage#getConstant()
		 * @generated
		 */
		public static final EClass CONSTANT = eINSTANCE.getConstant();

		/**
		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute CONSTANT__VALUE = eINSTANCE.getConstant_Value();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Reference <em>Reference</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Reference
		 * @see org.eclipse.iota.IotaPackage#getReference()
		 * @generated
		 */
		public static final EClass REFERENCE = eINSTANCE.getReference();

		/**
		 * The meta object literal for the '<em><b>Variable</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference REFERENCE__VARIABLE = eINSTANCE.getReference_Variable();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Addition <em>Addition</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Addition
		 * @see org.eclipse.iota.IotaPackage#getAddition()
		 * @generated
		 */
		public static final EClass ADDITION = eINSTANCE.getAddition();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Multiplication <em>Multiplication</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Multiplication
		 * @see org.eclipse.iota.IotaPackage#getMultiplication()
		 * @generated
		 */
		public static final EClass MULTIPLICATION = eINSTANCE.getMultiplication();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Negation <em>Negation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Negation
		 * @see org.eclipse.iota.IotaPackage#getNegation()
		 * @generated
		 */
		public static final EClass NEGATION = eINSTANCE.getNegation();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Division <em>Division</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Division
		 * @see org.eclipse.iota.IotaPackage#getDivision()
		 * @generated
		 */
		public static final EClass DIVISION = eINSTANCE.getDivision();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Exponentiation <em>Exponentiation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Exponentiation
		 * @see org.eclipse.iota.IotaPackage#getExponentiation()
		 * @generated
		 */
		public static final EClass EXPONENTIATION = eINSTANCE.getExponentiation();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.HighLevelExpression <em>High Level Expression</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.HighLevelExpression
		 * @see org.eclipse.iota.IotaPackage#getHighLevelExpression()
		 * @generated
		 */
		public static final EClass HIGH_LEVEL_EXPRESSION = eINSTANCE.getHighLevelExpression();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.LinearCombination <em>Linear Combination</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.LinearCombination
		 * @see org.eclipse.iota.IotaPackage#getLinearCombination()
		 * @generated
		 */
		public static final EClass LINEAR_COMBINATION = eINSTANCE.getLinearCombination();

		/**
		 * The meta object literal for the '<em><b>Variables</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LINEAR_COMBINATION__VARIABLES = eINSTANCE.getLinearCombination_Variables();

		/**
		 * The meta object literal for the '<em><b>Factors</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LINEAR_COMBINATION__FACTORS = eINSTANCE.getLinearCombination_Factors();

		/**
		 * The meta object literal for the '<em><b>Offset</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LINEAR_COMBINATION__OFFSET = eINSTANCE.getLinearCombination_Offset();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Polynom <em>Polynom</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Polynom
		 * @see org.eclipse.iota.IotaPackage#getPolynom()
		 * @generated
		 */
		public static final EClass POLYNOM = eINSTANCE.getPolynom();

		/**
		 * The meta object literal for the '<em><b>Variable</b></em>' reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference POLYNOM__VARIABLE = eINSTANCE.getPolynom_Variable();

		/**
		 * The meta object literal for the '<em><b>Factors</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference POLYNOM__FACTORS = eINSTANCE.getPolynom_Factors();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.LinearExpression <em>Linear Expression</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.LinearExpression
		 * @see org.eclipse.iota.IotaPackage#getLinearExpression()
		 * @generated
		 */
		public static final EClass LINEAR_EXPRESSION = eINSTANCE.getLinearExpression();

		/**
		 * The meta object literal for the '<em><b>Base</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LINEAR_EXPRESSION__BASE = eINSTANCE.getLinearExpression_Base();

		/**
		 * The meta object literal for the '<em><b>Factor</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LINEAR_EXPRESSION__FACTOR = eINSTANCE.getLinearExpression_Factor();

		/**
		 * The meta object literal for the '<em><b>Offset</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference LINEAR_EXPRESSION__OFFSET = eINSTANCE.getLinearExpression_Offset();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Property <em>Property</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Property
		 * @see org.eclipse.iota.IotaPackage#getProperty()
		 * @generated
		 */
		public static final EClass PROPERTY = eINSTANCE.getProperty();

		/**
		 * The meta object literal for the '<em><b>Body</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference PROPERTY__BODY = eINSTANCE.getProperty_Body();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Sequent <em>Sequent</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Sequent
		 * @see org.eclipse.iota.IotaPackage#getSequent()
		 * @generated
		 */
		public static final EClass SEQUENT = eINSTANCE.getSequent();

		/**
		 * The meta object literal for the '<em><b>Premise</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SEQUENT__PREMISE = eINSTANCE.getSequent_Premise();

		/**
		 * The meta object literal for the '<em><b>Conclusion</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SEQUENT__CONCLUSION = eINSTANCE.getSequent_Conclusion();

		/**
		 * The meta object literal for the '<em><b>Proof</b></em>' containment reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference SEQUENT__PROOF = eINSTANCE.getSequent_Proof();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Alternation <em>Alternation</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Alternation
		 * @see org.eclipse.iota.IotaPackage#getAlternation()
		 * @generated
		 */
		public static final EClass ALTERNATION = eINSTANCE.getAlternation();

		/**
		 * The meta object literal for the '<em><b>Clauses</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference ALTERNATION__CLAUSES = eINSTANCE.getAlternation_Clauses();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Proof <em>Proof</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Proof
		 * @see org.eclipse.iota.IotaPackage#getProof()
		 * @generated
		 */
		public static final EClass PROOF = eINSTANCE.getProof();

		/**
		 * The meta object literal for the '<em><b>Steps</b></em>' containment reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference PROOF__STEPS = eINSTANCE.getProof_Steps();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.Step <em>Step</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.Step
		 * @see org.eclipse.iota.IotaPackage#getStep()
		 * @generated
		 */
		public static final EClass STEP = eINSTANCE.getStep();

		/**
		 * The meta object literal for the '<em><b>Rule</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute STEP__RULE = eINSTANCE.getStep_Rule();

		/**
		 * The meta object literal for the '<em><b>Target</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute STEP__TARGET = eINSTANCE.getStep_Target();

		/**
		 * The meta object literal for the '<em><b>Match</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EAttribute STEP__MATCH = eINSTANCE.getStep_Match();

		/**
		 * The meta object literal for the '<em><b>Sequent</b></em>' container reference feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		public static final EReference PROOF__SEQUENT = eINSTANCE.getProof_Sequent();

		/**
		 * The meta object literal for the '{@link org.eclipse.iota.model.EquationType <em>Equation Type</em>}' enum.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.model.EquationType
		 * @see org.eclipse.iota.IotaPackage#getEquationType()
		 * @generated
		 */
		public static final EEnum EQUATION_TYPE = eINSTANCE.getEquationType();

		/**
		 * The meta object literal for the '<em>Rule</em>' data type.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see org.eclipse.iota.rewrite.IotaRule
		 * @see org.eclipse.iota.IotaPackage#getIotaRule()
		 * @generated
		 */
		public static final EDataType IOTA_RULE = eINSTANCE.getIotaRule();

	}

} //IotaPackage
